//
// Created by kyle on 25-7-16.
//

#ifndef FONTMETRICSTOOL_H
#define FONTMETRICSTOOL_H

#include <string>
#include <utility>
#include <freetype/freetype.h>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <freetype/ftglyph.h>
using namespace std;
class FontMetricsTool {
public:
    // 构造函数，传入字体文件路径
    explicit FontMetricsTool(FT_Face face):face(face){};

    // 析构函数
    ~FontMetricsTool();

    // 获取字体尺寸信息
    // 返回一个pair，first是字符宽度，second是总行高
    std::pair<int, int> getFontMetrics(int fontSize);

    // 二分查找最大字体大小
    int findMaxFontSize(char character, int screenWidth, int screenHeight) ;
private:
    FT_Face face;
    // 获取字符的边界框（宽度和高度）
    bool getGlyphDimensions(FT_Face face, char ch, unsigned int fontSize, int &width, int &height);
};



#endif //FONTMETRICSTOOL_H
